package cn.iocoder.yudao.module.forward.service.license;

import javax.validation.*;
import cn.iocoder.yudao.module.forward.controller.admin.license.vo.*;
import cn.iocoder.yudao.module.forward.controller.app.register.vo.AltertInfoReqVO;
import cn.iocoder.yudao.module.forward.controller.app.register.vo.RegisterReqVO;
import cn.iocoder.yudao.module.forward.controller.app.register.vo.SuspendReqVO;
import cn.iocoder.yudao.module.forward.controller.app.scope.vo.AuthorizeReqVO;
import cn.iocoder.yudao.module.forward.controller.app.scope.vo.CancelAuthReqVO;
import cn.iocoder.yudao.module.forward.dal.dataobject.license.LicenseDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 授权码 Service 接口
 *
 * @author zhang
 */
public interface LicenseService {

    /**
     * 创建授权码
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createLicense(@Valid LicenseSaveReqVO createReqVO);

    /**
     * 更新授权码
     *
     * @param updateReqVO 更新信息
     */
    void updateLicense(@Valid LicenseSaveReqVO updateReqVO);

    /**
     * 删除授权码
     *
     * @param id 编号
     */
    void deleteLicense(Integer id);

    /**
     * 获得授权码
     *
     * @param id 编号
     * @return 授权码
     */
    LicenseDO getLicense(Integer id);

    LicenseDO getLicenseRegister(RegisterReqVO licenseDO);

    /**
     * 获得授权码分页
     *
     * @param pageReqVO 分页查询
     * @return 授权码分页
     */
    PageResult<LicenseDO> getLicensePage(LicensePageReqVO pageReqVO);

    void updateById(LicenseDO licenseDO);

    LicenseDO getLicenseRegister(AltertInfoReqVO altertInfoReqVO);

    LicenseDO getLicenseRegister(SuspendReqVO suspendReqVO);

    LicenseDO getLicenseRegister(AuthorizeReqVO authorizeReqVO);

    LicenseDO getLicenseRegister(CancelAuthReqVO cancelAuthReqVO);
}